<template>
	<view>
		<mumu-get-qrcode
			:continue="isContinuous"
			:exact="exact"
			:size="size"
			:definition="definition"
			@success='handleScanSuccess'
			@error="handleScanError"
		></mumu-get-qrcode>
	</view>
</template>

<script>
	import mumuGetQrcode from '@/uni_modules/mumu-getQrcode/components/mumu-getQrcode/mumu-getQrcode.vue'
	import Utils from '@/utils/utils'
	
	export default {
		components: {
			mumuGetQrcode
		},
		
		data() {
			return {
				// 哪个页面扫码触发的，之后扫码完毕还得返回哪个页面
				prevPageUrl: '',
				
				// 功能类型：1 零部件扫码，2 车号扫码，3 新增故障件条码（扫码获取新旧码）
				type: null,
				
				// 扫码时携带的参数，扫码完成后，需要带回上一个页面
				querys: '',
				
				// 是否连续扫码，false 监听一次 true 持续监听
				isContinuous: false,
				
				// 选调用摄像头。environment 后摄像头 user 前摄像头
				exact: 'environment',
				
				// 扫码屏幕大小。whole 全屏 balf 半屏
				size: 'whole',
				
				// 调用摄像头清晰度。fasle 正常 true 高清
				definition: false,
			}
		},
		
		onLoad(options) {
			// 记录上一页的页面地址，扫码完毕后，返回上一页处理逻辑
			this.prevPageUrl = options.prevPageUrl
			this.type = parseInt(options.type)
			
			// 如果参数存在将参数记录一下
			if (options.querys) {
				this.querys = options.querys
			}
		},
		
		methods: {
			// 检测到图中有二维码并读取到数据是回调
			handleScanSuccess(data) {
				// 关闭当前页，返回上一页
				uni.navigateBack({
					delta: 1,
					success: () => {
						// 获取上一页实例
						let pages = getCurrentPages()
						let prevPage = pages[pages.length - 2]
						
						// 给上一页实例添加扫码结果，以便于实际扫码页面处理
						prevPage.scanResult = JSON.stringify({
							pageType: 'scan',
							code: 200,
							result: data,
							type: this.type,
							querys: this.querys
						})
					}
				})
			},
			
			// 组件内部发送错误，通常是摄像头没有调用成功
			handleScanError(err) {
				// 获取上一页实例
				let pages = getCurrentPages()
				let prevPage = pages[pages.length - 2]
				
				// 给上一页实例添加扫码结果，以便于实际扫码页面处理
				prevPage.scanResult = {
					pageType: 'scan',
					code: 500,
					result: err,
					type: this.type,
					querys: this.querys
				}
				
				// 关闭当前页，返回上一页
				uni.navigateBack({ delta: 1 })
			},
		}
	}
</script>

<style>
</style>